home *** CD-ROM | disk | FTP | other *** search
- //Ask the user for a folder whose contents are to be imported
-
-
-
- var targetFolder = folderGetDialog("Import Items from Folder..."); //returns a folder or null
- if (targetFolder) {
-
- // if no project open, create a new project to toss the files into. [23839]
- if (!app.project) {
- app.newProject();
- }
-
- function processFile (theFile) {
- try {
- var importOptions = new ImportOptions (theFile); //create a variable containing ImportOptions
- importSafeWithError (importOptions);
- } catch( error ) {
- // eat errors.
- }
- }
-
- function testForSequence (files){
- var searcher = new RegExp ("[0-9]+");
- var movieFileSearcher = new RegExp ("(mov|avi|mpg)$", "i");
- var parseResults = new Array;
-
- for (x = 0; (x < files.length) & x < 10; x++) { //test that we have a sequence, stop parsing after 10 files
-
- var movieFileResult = movieFileSearcher.exec(files[x].name);
- if (! movieFileResult) {
-
- var currentResult = searcher.exec(files[x].name);
- //regular expressions return null if no match was found
- //otherwise they return an array with the following information:
- //array[0] = the matched string
- //array[1..n] = the matched capturing parentheses
-
- if (currentResult) { //we have a match - the string contains numbers
- //the match of those numbers is stored in the array[1]
- //take that number and save it into parseResults
- parseResults[parseResults.length] = currentResult[0];
- }
- else {
- parseResults[parseResults.length] = null;
- }
- }
- else {
- parseResults[parseResults.length] = null;
- }
- }
-
- //if all the files we just went through have a number in their file names,
- //assume they are part of a sequence & return the first file
-
- var result = null;
- for (i = 0; i < parseResults.length; ++i) {
- if (parseResults[i]) {
- if (! result) {
- result = files[i];
- }
- } else {
- //case in which a file name did not contain a number
- result = null;
- break;
- }
- }
- return result;
- }
-
- function importSafeWithError (importOptions) {
- try {
- app.project.importFile (importOptions);
- } catch (error) {
- alert(error.toString() + importOptions.file.fsName);
- }
- }
-
- function processFolder(theFolder) {
- var files = theFolder.getFiles(); //Get an array of files in the target folder
-
- //test whether theFolder contains a sequence
- var sequenceStartFile = testForSequence(files);
-
- //if it does contain a sequence, import the sequence
- if (sequenceStartFile) {
- try {
- var importOptions = new ImportOptions (sequenceStartFile); //create a variable containing ImportOptions
-
- importOptions.sequence = true;
- //importOptions.forceAlphabetical = true; //un-comment this if you want to force alpha order by default
- importSafeWithError (importOptions);
- } catch (error) {
-
- }
- }
-
- //otherwise, import the files and recurse
-
- for (index in files) { //Go through the array and set each element to singleFile, then run the following
- if (files[index] instanceof File) {
- if (! sequenceStartFile) { //if file is already part of a sequence, don't import it individually
- processFile (files[index]); //calls the processFile function above
- }
- }
- if (files[index] instanceof Folder) {
- processFolder (files[index]); // recursion
- }
- }
- }
-
- processFolder(targetFolder);
- }
-
- //Recursively examine that folder
-